var geocoder;
var map;
var adrrs;
var i = 0;
var r = 10;
var t;
var output = [];
geocoder = new google.maps.Geocoder();

function get_locations(lines) {
//r=10;
//console.log($('#source').val().split('\n'));
    adrrs = lines;//$('#source').val().split('\n');
    /* for (var i=0; i<=adrrs.length;i++)
     {
     console.log(adrrs[i]);
     
     } */

    t = setInterval(codeAddress, 10000);
}

function codeAddress() {
//var address = document.getElementById('address').value; 
    if (i >= (adrrs.length)) {
        clearInterval(t);
        console.log('stop process');
        return;
    }
    var address = adrrs[i];
    i++;
//r--;
    console.log(i + ' record from csv - ' + address);
//if (r<1) return;
//if (i>adrrs.length-1) {$('#output').append(JSON.stringify( output )); return;}

    geocoder.geocode({'address': address[1]}, function(results, status) {
        if (status == google.maps.GeocoderStatus.OK) {

            console.log(results[0].geometry.location);
//$('#output').append(results[0].geometry.location.Ya);
            /* var of={
             text: address[0],
             snippet: address[1]+address[2]
             };
             */
            var value = {
                latitude: results[0].geometry.location.jb,
                longitude: results[0].geometry.location.kb};
//output.push(of);
            console.log(value);
            $('#output').append(address[1] + ' - location detected \n');
            sendRecord(value, address);

//$('#').val();
//end create info
        } else {
            $('#error').append(address[1] + ' - location not detected \n');
            var value = 0;
            sendRecord(value, address);
//alert('Geocode was not successful for the following reason: ' + status);
        }
    });
//$('#output').val(JSON.stringify( output ));
}

function sendRecord(value, address) {

    // заполнение полей
    $('#TPLocation_name').val(address[0]);
    $('#TPLocation_address').val(address[1]);
    $('#TPLocation_telephone_land').val(address[3]);
    if ('' == address[4])
        $('#TPLocation_telephone_mob1').val(address[3]);
    else
        $('#TPLocation_telephone_mob1').val(address[4]);
    $('#TPLocation_telephone_mob2').val(address[5]);
    $('#TPLocation_email').val(address[6]);
    console.log(address);
    $('#TPLocation_location').val(JSON.stringify(value));

    // подготовка запроса
    serialize = $("#tplocation-form").serialize();
    $.post('/pushtower/appcamel/index.php?r=tpLocation/ajaxcreate', serialize, function(result) {
        switch (result)
        {
            case '1':
                $('#error').append("All ok.");
                break;
            case '0':
                $('#error').append("Record " + address[0] + " didn't create.");
                break;
            default:
                $('#error').append('Something wrong for ' + address[0] + ' with result ' + result);
        }

    });
}
//==========================
function processData(allText) {
//console.log(allText);
    var allTextLines = allText.split(/\r\n|\n/);
    var headers = allTextLines[0].split(';');
    var lines = [];
    console.log(allTextLines.length);
    for (var i = 1; i < allTextLines.length; i++) {
        var data = allTextLines[i].split(';');
        if (data.length == headers.length) {

            var tarr = [];
            for (var j = 0; j < headers.length; j++) {
                tarr.push(data[j]);
            }
            lines.push(tarr);
        }
    }
    console.log(lines.length);
    get_locations(lines);
}

function onFilesSelect(e) {
//console.log(document.getElementById('test').files[0].getAsText());
    var files = e.target.files;
    // Перебираем все файлы в FileList'е
    for (var i = 0; i < files.length; i++) {
        file = files[i];
        // узнаём информацию о нём
        data = [file.name, file.type, file.size];
        fr = new FileReader();
        // считываем его в строку base64
        fr.readAsText(file);
        // как только файл загружен
        fr.onload = (function(file, data) {
            return function(e) {
                console.log(e.target.result);
                processData(e.target.result);
            }
        })(file, data);

    }
}


// проверяем поддерживает ли браузер file API
if (window.File && window.FileReader && window.FileList && window.Blob) {
    // если да, то как только страница загрузится
    onload = function() {
        // вешаем обработчик события, срабатывающий при изменении input'а
        document.querySelector('#f').addEventListener('change', onFilesSelect, false);
    }
// если нет, то предупреждаем, что демо работать не будет
} else {
    alert('К сожалению ваш браузер не поддерживает file API');
}
 